Skip to content

Conversation

@boomanaiden154
Copy link
Contributor

Now that all of the clang tests have been verified (and adjusted when
necessary) to work with lit's internal shell, we can enable it by
default, which this patch does.

This should make check-clang 10-15% faster in addition to providing
richer feedback on test failures.

@llvmbot llvmbot added the clang Clang issues not falling into any other category label Sep 14, 2025
@llvmbot
Copy link
Member

llvmbot commented Sep 14, 2025

@llvm/pr-subscribers-clang

Author: Aiden Grossman (boomanaiden154)

Changes

Now that all of the clang tests have been verified (and adjusted when
necessary) to work with lit's internal shell, we can enable it by
default, which this patch does.

This should make check-clang 10-15% faster in addition to providing
richer feedback on test failures.


Full diff: https://github.com/llvm/llvm-project/pull/158465.diff

1 Files Affected:

  • (modified) clang/test/lit.cfg.py (+12-1)
diff --git a/clang/test/lit.cfg.py b/clang/test/lit.cfg.py
index d34319131ab6d..09c9311c4d362 100644
--- a/clang/test/lit.cfg.py
+++ b/clang/test/lit.cfg.py
@@ -18,11 +18,22 @@
 # name: The name of this test suite.
 config.name = "Clang"
 
+# TODO: Consolidate the logic for turning on the internal shell by default for all LLVM test suites.
+# See https://github.com/llvm/llvm-project/issues/106636 for more details.
+#
+# We prefer the lit internal shell which provides a better user experience on failures
+# and is faster unless the user explicitly disables it with LIT_USE_INTERNAL_SHELL=0
+# env var.
+use_lit_shell = True
+lit_shell_env = os.environ.get("LIT_USE_INTERNAL_SHELL")
+if lit_shell_env:
+    use_lit_shell = lit.util.pythonize_bool(lit_shell_env)
+
 # testFormat: The test format to use to interpret tests.
 #
 # For now we require '&&' between commands, until they get globally killed and
 # the test runner updated.
-config.test_format = lit.formats.ShTest(not llvm_config.use_lit_shell)
+config.test_format = lit.formats.ShTest(execute_external=not use_lit_shell)
 
 # suffixes: A list of file extensions to treat as test files.
 config.suffixes = [

Created using spr 1.3.6

[skip ci]
Created using spr 1.3.6
Created using spr 1.3.6

[skip ci]
Created using spr 1.3.6
Created using spr 1.3.6

[skip ci]
Created using spr 1.3.6
boomanaiden154 added a commit to boomanaiden154/llvm-project that referenced this pull request Sep 19, 2025
Now that all of the clang tests have been verified (and adjusted when
necessary) to work with lit's internal shell, we can enable it by
default, which this patch does.

This should make check-clang 10-15% faster in addition to providing
richer feedback on test failures.

Pull Request: llvm#158465
Created using spr 1.3.6

[skip ci]
Created using spr 1.3.6
Created using spr 1.3.6

[skip ci]
Created using spr 1.3.6
Created using spr 1.3.6

[skip ci]
Created using spr 1.3.6
Created using spr 1.3.6

[skip ci]
Created using spr 1.3.6
Created using spr 1.3.6

[skip ci]
Created using spr 1.3.6
@boomanaiden154 boomanaiden154 changed the base branch from users/boomanaiden154/main.clang-enable-lit-internal-shell-by-default to main September 20, 2025 04:47
@boomanaiden154 boomanaiden154 merged commit 25e218d into main Sep 20, 2025
9 of 12 checks passed
@boomanaiden154 boomanaiden154 deleted the users/boomanaiden154/clang-enable-lit-internal-shell-by-default branch September 20, 2025 04:48
llvm-sync bot pushed a commit to arm/arm-toolchain that referenced this pull request Sep 20, 2025
Now that all of the clang tests have been verified (and adjusted when
necessary) to work with lit's internal shell, we can enable it by
default, which this patch does.

This should make check-clang 10-15% faster in addition to providing
richer feedback on test failures.

Reviewers: AaronBallman, petrhosek, rnk, ilovepi, shafik, cmtice

Reviewed By: petrhosek, ilovepi, rnk, cmtice

Pull Request: llvm/llvm-project#158465
@ojhunt
Copy link
Contributor

ojhunt commented Oct 21, 2025

How are environment variables set with the internal shell?

@boomanaiden154
Copy link
Contributor Author

You have to prefix the invocation with env. e.g., env ENV_VARIABLE=some_value ./command_that_reads_env_variable.

export should also work for when you need an env variable to span multiple commands.

@ojhunt
Copy link
Contributor

ojhunt commented Oct 21, 2025

You have to prefix the invocation with env. e.g., env ENV_VARIABLE=some_value ./command_that_reads_env_variable.

export should also work for when you need an env variable to span multiple commands.

I found it eventually :D

Is there a doc page for this? (grepping for "lit" was not effective :D)

@boomanaiden154
Copy link
Contributor Author

Is there a doc page for this? (grepping for "lit" was not effective :D)

There's not one explicitly for the internal shell. We might want to add a section on the man page at some point, but no one has gotten around to it because the issues where things end up being different are pretty long-tail.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

clang Clang issues not falling into any other category

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants